home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / bgp_detect.nasl < prev    next >
Text File  |  2005-03-31  |  2KB  |  83 lines

  1. # This plugin was written by Michel Arboi <arboi@alussinan.org>
  2. # It is released under the GNU Public Licence (GPLv2)
  3. #
  4. # See RFC 1771
  5. #
  6.  
  7. if(description)
  8. {
  9.   script_id(11907);
  10.   script_version ("$Revision: 1.2 $");
  11.  
  12.   name["english"] = "BGP detection";
  13.   script_name(english:name["english"]);
  14.  
  15.   desc["english"] = "
  16. This machine is running BGP.
  17.  
  18. Risk factor : Low";
  19.  
  20.   script_description(english:desc["english"]);
  21.  
  22.   summary["english"] = "Sends a BGP Hello packet";
  23.   script_summary(english:summary["english"]);
  24.   script_category(ACT_GATHER_INFO); 
  25.   script_copyright(english:"This script is Copyright (C) 2003 Michel Arboi");
  26.   script_family(english:"Service detection");
  27.   exit(0);
  28. }
  29.  
  30. ##include("dump.inc");
  31. include("misc_func.inc");
  32.  
  33. port = 179;
  34. if (! get_port_state(port)) exit(0);
  35. soc = open_sock_tcp(port);
  36. if (! soc) exit(0);
  37.  
  38. s = this_host();
  39. v = eregmatch(pattern: "^([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9])+$", string: s);
  40. if (isnull(v)) exit(0);
  41. for (i = 1; i <=4; i++) a[i] = int(v[i]);
  42.  
  43. r = '\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF'; # Marker
  44. r += raw_string(0, 45,    # Length
  45.         1,    # Open message
  46.         4,     # Version
  47.         rand() % 256, rand() % 256,    # My AS
  48.         0, 180,    # Hold time
  49.         a[1], a[2], a[3], a[4],    # BGP identifier
  50.         0,     # Optional parameter length
  51.         2, 6, 1, 4, 0, 1, 0, 1,
  52.         2, 2, 80, 0,
  53.         2, 2, 2, 0    );
  54.  
  55. send(socket: soc, data: r);
  56.  
  57. r = recv(socket: soc, length: 16, min: 16);
  58.  
  59. for (i = 0; i < 16; i ++)
  60.   if (ord(r[i]) != 0xFF)
  61.     break;
  62. if (i < 16) exit(0);        # Bad marker
  63.  
  64. r = recv(socket: soc, length: 2, min: 2);
  65. len = ord(r[0]) * 256 + ord(r[1]);
  66. len -= 18;
  67. if (len <= 0) exit(0);
  68. r = recv(socket: soc, length: len, min: len);
  69. ##dump(ddata: r, dtitle: "BGP");
  70. type = ord(r[0]);
  71.  
  72. if (type == 1)    # Hello
  73. {
  74.   ver = ord(r[1]);
  75.   as = 256 * ord(r[2]) + ord(r[3]);
  76.   ht = 256 * ord(r[4]) + ord(r[5]);    # Hold time
  77. }
  78. #else if (type == 3)    # Notification - may be error
  79.  
  80. register_service(port: port, proto: "bgp");
  81. security_note(port);
  82.  
  83.